import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:convert';

part 'my_get_followlist_response.freezed.dart';
part 'my_get_followlist_response.g.dart';

@freezed
class MyGetFollowlistResponse with _$MyGetFollowlistResponse {
  const factory MyGetFollowlistResponse({
    @JsonKey(name: "c") required int c,
    @JsonKey(name: "m") required String m,
    @JsonKey(name: "d") required List<D> d,
  }) = _MyGetFollowlistResponse;

  factory MyGetFollowlistResponse.fromJson(Map<String, dynamic> json) =>
      _$MyGetFollowlistResponseFromJson(json);
}

@freezed
class D with _$D {
  const factory D({
    @JsonKey(name: "uid") required String uid,
    @JsonKey(name: "im_id") required String imId,
    @JsonKey(name: "uniqid") required String uniqid,
    @JsonKey(name: "user_role") required String userRole,
    @JsonKey(name: "register_source") required String registerSource,
    @JsonKey(name: "register_type") required String registerType,
    @JsonKey(name: "user_name") required dynamic userName,
    @JsonKey(name: "nick_name") required String nickName,
    @JsonKey(name: "auth_type") required String authType,
    @JsonKey(name: "gender") required String gender,
    @JsonKey(name: "birthday") required DateTime birthday,
    @JsonKey(name: "signature") required String signature,
    @JsonKey(name: "mobile") required String mobile,
    @JsonKey(name: "mobile_bind_time") required String mobileBindTime,
    @JsonKey(name: "email") required dynamic email,
    @JsonKey(name: "email_bind_time") required String emailBindTime,
    @JsonKey(name: "face") required String face,
    @JsonKey(name: "face_200") required String face200,
    @JsonKey(name: "face_source") required String faceSource,
    @JsonKey(name: "add_time") required String addTime,
    @JsonKey(name: "add_ip") required String addIp,
    @JsonKey(name: "update_time") required String updateTime,
    @JsonKey(name: "update_ip") required String updateIp,
    @JsonKey(name: "last_time") required String lastTime,
    @JsonKey(name: "last_ip") required dynamic lastIp,
    @JsonKey(name: "push_token") required String pushToken,
    @JsonKey(name: "comment_count") required String commentCount,
    @JsonKey(name: "fav_count") required String favCount,
    @JsonKey(name: "deleted_at") required String deletedAt,
    @JsonKey(name: "gold") required String gold,
    @JsonKey(name: "credit") required String credit,
  }) = _D;

  factory D.fromJson(Map<String, dynamic> json) => _$DFromJson(json);
}
